home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Kant Generator Pro 1.0.1 / source / Shell ƒ / generic window handlers.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  4.5 KB  |  189 lines  |  [TEXT/MMCC]

  1. #include "generic window handlers.h"
  2. #include "text twiddling.h"
  3. #include "window layer.h"
  4. #include "main.h"
  5.  
  6. #define kGrowBoxSize    15
  7.  
  8. enum { key_LeftArrow=0x1c, key_RightArrow, key_UpArrow, key_DownArrow };
  9. enum { key_PageUp=0x0b, key_PageDown };
  10. enum { key_Home=0x01 };
  11. enum { key_End=0x04 };
  12.  
  13. extern    Boolean            gInProgress;    /* see environment.h */
  14. extern    Boolean            gCustomCursor;
  15.  
  16. void GenericCopybits(WindowPtr theWindow, WindowPtr offscreenWindowPtr, Boolean active)
  17. {
  18.     Rect            tempRect;
  19.     
  20.     if (active)
  21.     {
  22.         DrawGrowIcon(theWindow);
  23.     }
  24.     else
  25.     {
  26.         tempRect.bottom=theWindow->portRect.bottom;
  27.         tempRect.right=theWindow->portRect.right;
  28.         tempRect.left=tempRect.right-kGrowBoxSize+1;
  29.         tempRect.top=tempRect.bottom-kGrowBoxSize+1;
  30.         EraseRect(&tempRect);
  31.     }
  32.     
  33.     UpdateControls(theWindow, theWindow->visRgn);
  34.     
  35.     tempRect=theWindow->portRect;
  36.     tempRect.bottom-=kGrowBoxSize;
  37.     tempRect.right-=kGrowBoxSize;
  38.     CopyBits(    &(offscreenWindowPtr->portBits),
  39.                 &(theWindow->portBits),
  40.                 &tempRect, &tempRect, 0, 0L);
  41. }
  42.  
  43. void GenericResizeControls(WindowPtr theWindow, short destOverload)
  44. {
  45.     TEHandle        hTE;
  46.     ControlHandle    vScrollBar, hScrollBar;
  47.     
  48.     hTE=GetWindowTE(theWindow);
  49.     vScrollBar=GetWindowVScrollBar(theWindow);
  50.     hScrollBar=GetWindowHScrollBar(theWindow);
  51.     AdjustScrollSizes(theWindow, hTE, vScrollBar, hScrollBar, destOverload);
  52.     AdjustViewRect(hTE);
  53.     TECalText(hTE);
  54.     AdjustForEndScroll(vScrollBar, hTE);
  55.     AdjustVScrollBar(vScrollBar, hTE);
  56. }
  57.  
  58. void GenericGetGrowSize(WindowPtr theWindow, Rect *sizeRect)
  59. {
  60.     SetRect(sizeRect, 200, 48+kGrowBoxSize+1, 32766, 32767);
  61. }
  62.  
  63. Boolean GenericKeyPressedInWindow(WindowPtr theWindow, unsigned char theChar)
  64. {
  65.     TEHandle        hTE;
  66.     ControlHandle    vScrollBar;
  67.     
  68.     if (gInProgress)
  69.     {
  70.         gInProgress=FALSE;
  71.         return TRUE;
  72.     }
  73.     
  74.     ObscureCursor();
  75.     hTE=GetWindowTE(theWindow);
  76.     vScrollBar=GetWindowVScrollBar(theWindow);
  77.     
  78.     switch (theChar)
  79.     {
  80.         case key_PageUp:
  81.             ScrollActionProc(vScrollBar, inPageUp);
  82.             break;
  83.         case key_PageDown:
  84.             ScrollActionProc(vScrollBar, inPageDown);
  85.             break;
  86.         case key_Home:
  87.             TEPinScroll(0, TEGetHeight((**hTE).nLines, 1, hTE), hTE);
  88.             break;
  89.         case key_End:
  90.             TEPinScroll(0, -TEGetHeight((**hTE).nLines, 1, hTE), hTE);
  91.             break;
  92.         default:
  93.             return FALSE;
  94.             break;
  95.     }
  96.     
  97.     AdjustVScrollBar(vScrollBar, hTE);
  98.     
  99.     return TRUE;
  100. }
  101.  
  102. Boolean GenericMouseClickedInWindow(WindowPtr theWindow, Point thePoint, Boolean isEditable)
  103. {
  104.     short            partCode;
  105.     ControlHandle    theControl;
  106.     short            scrollDistance;
  107.     short            oldSetting;
  108.     ControlActionUPP    scrollActionUPP=NewControlActionProc(ScrollActionProc);
  109.     TEHandle        hTE;
  110.     
  111.     if (gInProgress)
  112.         return TRUE;
  113.     
  114.     hTE=GetWindowTE(theWindow);
  115.     
  116.     if (PtInRect(thePoint, &((**hTE).viewRect)))
  117.     {
  118.         TEClick(thePoint, (GetTheModifiers()&512) ? TRUE : FALSE, hTE);
  119.         return TRUE;
  120.     }
  121.     else
  122.     {
  123.         partCode=FindControl(thePoint, theWindow, &theControl);
  124.         if (theControl==GetWindowVScrollBar(theWindow))
  125.         {
  126.             switch (partCode)
  127.             {
  128.                 case inThumb:
  129.                     oldSetting=GetControlValue(theControl);
  130.                     partCode=TrackControl(theControl, thePoint, 0L);
  131.                     if (partCode==inThumb)
  132.                     {
  133.                         scrollDistance=oldSetting-GetControlValue(theControl);
  134.                         if (scrollDistance!=0)
  135.                         {
  136.                             hTE=GetWindowTE(theWindow);
  137.                             TEPinScroll(0, scrollDistance*(**hTE).lineHeight, hTE);
  138.                         }
  139.                     }
  140.                     break;
  141.                 case inUpButton:
  142.                 case inDownButton:
  143.                 case inPageUp:
  144.                 case inPageDown:
  145.                     partCode=TrackControl(theControl, thePoint, scrollActionUPP);
  146.                     break;
  147.             }
  148.             
  149.             return TRUE;
  150.         }
  151.     }
  152.     
  153.     return FALSE;
  154. }
  155.  
  156. void GenericActivate(WindowPtr theWindow)
  157. {
  158.     GrafPtr            curPort;
  159.     
  160.     GetPort(&curPort);
  161.     SetPort(theWindow);
  162.     TEActivate(GetWindowTE(theWindow));
  163.     HiliteControl(GetWindowVScrollBar(theWindow), 0);
  164.     HiliteControl(GetWindowHScrollBar(theWindow), 0);
  165.     DrawGrowIcon(theWindow);
  166.     UpdateControls(theWindow, theWindow->visRgn);
  167.     SetPort(curPort);
  168. }
  169.  
  170. void GenericDeactivate(WindowPtr theWindow)
  171. {
  172.     Rect            tempRect;
  173.     GrafPtr            curPort;
  174.     
  175.     GetPort(&curPort);
  176.     SetPort(theWindow);
  177.     TEDeactivate(GetWindowTE(theWindow));
  178.     gCustomCursor=FALSE;
  179.     HiliteControl(GetWindowVScrollBar(theWindow), 255);
  180.     HiliteControl(GetWindowHScrollBar(theWindow), 255);
  181.     tempRect.bottom=theWindow->portRect.bottom;
  182.     tempRect.right=theWindow->portRect.right;
  183.     tempRect.left=tempRect.right-kGrowBoxSize+1;
  184.     tempRect.top=tempRect.bottom-kGrowBoxSize+1;
  185.     EraseRect(&tempRect);
  186.     UpdateControls(theWindow, theWindow->visRgn);
  187.     SetPort(curPort);
  188. }
  189.